<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数据类型</title>
    <script>
        function f1(){
            let i = 1;
            console.log(typeof i);
            i = 1.1;
            console.log(typeof i);
            let s = "admin";
            console.log(typeof(s));
            let flag = true;
            console.log(typeof flag);
            return "admin";
        }
        function f2(){
            // object类型范围较广
            // 1.纯对象类型
            let obj = new Object();
            obj.id = 1;
            obj.name = "admin";
            console.log(typeof obj);
            // 2.数组Array类型,本质上也是object
            let arr = [1,2,3];
            console.log(arr);
            console.log(typeof arr);
            // 3.日期Date类型,本质上也是object
            let date = new Date();
            console.log(date);
            console.log(typeof date);
            // 4.函数类型,function类型
            // 当变量的值是函数时,有几种定义情况
            // a.当变量的值是存在的另一个函数,没有带括号时
                // 表示将另一个函数整体作为当前变量的值
                // 此时的变量是一个function类型
            // b.当变量的值是存在的另一个函数,带有括号时
                // 表示运行指定的函数,并将运行的函数的返回值作为当前变量的值
                // 此时的变量是对应的函数的返回值类型
            // c.当变量的值是一个匿名函数时,其效果与第一种情况a基本一致
                // 表示变量的值即为匿名函数的整体
                // 此时的变量是一个function类型
            let fn = f1;
            let fn2 = f1();
            let fn3 = function(){
                console.log("这是函数");
            }
            console.log(typeof fn);
            console.log(typeof fn2);
            console.log(typeof fn3);
            // alert(fn);
            // alert(fn2);
            // alert(fn3);
        }
        function f3(){
            // 在开发中,会存在一些不正确的值
            // 这些值没有对应的类型
            let a = null;
            let b = undefined;
            let c = NaN;
            console.log(typeof a);  // object
            console.log(typeof b);  // undefined
            console.log(typeof c);  //Not a Number number
        }
    </script>
</head>
<body>
<button onclick="f1()">基本数据类型</button><br/>
<button onclick="f2()">复合数据类型</button><br/>
<button onclick="f3()">非正常类型</button><br/>
</body>
</html>